//实现异步日志缓冲区
#include "util.hpp"
#include <vector>
namespace mjwlog
{
    #define DEFAULT_BUFFER_SIZE (10*1024*1024)
    class Buffer
    {
        public:
            Buffer():_buffer(DEFAULT_BUFFER_SIZE),_writer_idx(0),_reader_idx(0){}
            //向缓冲区写入数据
            void push(const char* data,size_t len);
            //返回可读数据的起始地址
            const char* begin();
            //返回可读数据的长度
            size_t readAbleSize();
            void moveReader(size_t len);
            //重置读写位置，初始化缓冲区
            void reset();
            //对Buffer实现交换操作
            void swap(const Buffer& buffer);
            //判断缓冲区是否为空
            bool empty();
        private:
            std::vector<char> _buffer;
            size_t _reader_idx;//当前可读数据的指针
            size_t _writer_idx;//当前可写数据的指针
    };
}